# '''
# # 夹具：在用例执行之前、执行之后，自动运行代码
#
# ## 场景：
#
# - 之前：加密参数 / 之后：解密结果
# - 之前：启动浏览器 / 之后：关闭浏览器
# - 之前：注册、登录账号 / 之后：删除账号
# '''
# import datetime
#
# import pytest
#
# #fixture
#
# #1我们要创建一个函数，
# #2.添加装饰器 @pytest.fixture、
# #3.添加一个yield关键字
#
#
# '''
# 有了这三个之后就是一个fixture
#
# 第一种使用的方式，就是直接放到测试用例的参数列表里
# def test_int(fun):#fun 就是fixture 得到的是yield 的返回值
#     pass
#
# 高级用法
#
#     1.自动使用
#     2.依赖使用
#         fixture可以使用fixture来进行前后置的自动操作 可以在其嵌套fixture
#     3.返回一个内容
#         在接口自动化封装：接口关联 使用yield返回值关联
#     4.范围的共享 还可以使用scop 共享
#
# '''
# @pytest.fixture
# def fun2():
#     print("233")
#
#     yield#     yield 后面就是返回值# 开始执行，用例
#     print("2344rt")
#
#
#
# @pytest.fixture(autouse=True)        #可以让后面的都使用了fixture autouse=True
# def fun(fun2):
#     print(datetime.datetime.now(),'用例开始执行')
#
#     #前置代码，执行
#     yield#可以跳出这段代码，去执行其他的在回来执行，这段代码的后面的代码
#     print(datetime.datetime.now(),'用例执行结束')
#
#     #后置代码
#
#     pass
#
# # @pytest.mark.oot
# # def test_int(fun):#谁使用了这个方法，谁就是中间层
# #     pass
# #
# # @pytest.mark.usefixtures('fun')#加的是字符串
# # def test_float():
# #     pass
# #
#
#
#
#
